1. Introduction:

This report provides information on cancer incidence in NHS Borders of Scotland, covering the years from 1998 to 2019. Predictions of cancer incidence can help to plan cancer services for the future.

2. Data Source:

Cancer incidence data - https://www.opendata.nhs.scot/dataset/annual-cancer-incidence

Geography health board labels lookup - https://www.opendata.nhs.scot/dataset/9f942fdb-e59e-44f5-b534-d6e17229cc7b/resource/652ff726-e676-4a20-abda-435b98dd7bdc/download/geography_codes_and_labels_hb2014_01042019.csv

Source: https://www.opendata.nhs.scot/

3. Assumptions:

Non-melanoma skin cancer:

The first occurrence of a basal cell carcinoma is the most common type of non-melanoma skin cancer. This data is collected only in Scotland because they are so common. However other countries doesn’t collect data on non-melanoma skin cancers.As per the Data and intelligence ( previously ISD Scotland), Non-melanoma skin cancer is rarely fatal and often excluded from comparative analyses of cancer data. So in our analysis,the data on non-melanoma skin cancer is excluded.

References can be found in https://www.isdscotland.org/Health-Topics/Cancer/Cancer-Statistics/Skin/

4. Analysis on Cancer Incidence based on various factors

4.1 Cancer Incidence for all cancer types

The overall risk of cancer is higher in female than men until 2012. From 2015 on wards, the overall risk of cancer is higher in men than women

Over the last ten years, the risk of developing cancer in Scotland NHS Borders seems to increase until 2017. There seems to be a decrease in trend from the year 2017 but risk of developing cancer in female is slightly increasing in the year 2018.

4.2 Cancer Incidence for all cancer types by age

The numbers of cancers increases with age to a peak at 65-69 years, and then declines thereafter as the size of the older population decreases. In 2016, over 75% of cancer diagnoses were in people aged 60 and over.

4.3 Cancer Incidence using Standardized Incidence Ratio (SIR)

A Standardized Incidence Ratio (SIR) is used in our case to determine if the occurrence of cancer in a relatively small population is high or low. A confidence interval is calculated around an SIR to determine how likely it is that the number of observed number of cases is high or low by chance.

4.4 Cancer Incidence with respect to age-specific rates (2015 - 2019):

Below plot shows the cancer incidence for the year 2015 - 2019 with respect to the age-specific rate per 100,000 population.

The age specific numbers of cancers reflect both the risk and the number of people at risk. The numbers of cancers increases with age to a peak at 70-74 years, and then declines thereafter as the size of the older population decreases.

4.5 Cancer Incidence by Site:

Though the plot shows that the highest cases has been seen in men for Prostate Cancer and female for Breast Cancer, Lung cancer remains the most common cancer in NHS Borders for both sexes combined, for the period of 2015 - 2019.

4.6 Cancer Incidence for the top 4 cancer sites across the Gender:

For females, there has been little significant change in rates of all the three types of cancer. For males, there has been a great rise in prostate cancers and a little significant rise in the colorectal cancer but the cancer rate falls in lung cancers

5. Risk Factor with respect to Cancer Type:

The trends in cancer incidence may also be influenced by changes in the prevalence of risk factors associated with cancer over time.

6. Cancer waiting times:

Even though, the cancer is suspected or confirmed, it is not always the case that the treatment could begin as soon as possible. There could be various reasons for the waiting times. As per Public Health Scotland,a 62-day standard applies to GP referrals, cancer screening positive, self-referrals and a 31-day standard applies to all patients from the date a decision to treat a newly-diagnosed cancer is made.

7. Key Points :

LS0tDQp0aXRsZTogIkNhbmNlciBJbmNpZGVuY2UgLSBOSFMgQm9yZGVycyINCm91dHB1dDoNCiAgaHRtbF9kb2N1bWVudDoNCiAgICBkZl9wcmludDogcGFnZWQNCi0tLQ0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldCgNCgllY2hvID0gRkFMU0UsDQoJbWVzc2FnZSA9IEZBTFNFLA0KCXdhcm5pbmcgPSBGQUxTRQ0KKQ0KYGBgDQoNCiMjIDEuIEludHJvZHVjdGlvbjoNCg0KVGhpcyByZXBvcnQgcHJvdmlkZXMgaW5mb3JtYXRpb24gb24gY2FuY2VyIGluY2lkZW5jZSBpbiBOSFMgQm9yZGVycyBvZiBTY290bGFuZCwgY292ZXJpbmcgdGhlIHllYXJzIGZyb20gMTk5OCB0byAyMDE5LiBQcmVkaWN0aW9ucyBvZiBjYW5jZXIgaW5jaWRlbmNlIGNhbiBoZWxwIHRvIHBsYW4gY2FuY2VyIHNlcnZpY2VzIGZvciB0aGUgZnV0dXJlLg0KDQojIyAyLiBEYXRhIFNvdXJjZToNCg0KQ2FuY2VyIGluY2lkZW5jZSBkYXRhIC0gPGh0dHBzOi8vd3d3Lm9wZW5kYXRhLm5ocy5zY290L2RhdGFzZXQvYW5udWFsLWNhbmNlci1pbmNpZGVuY2U+DQoNCkdlb2dyYXBoeSBoZWFsdGggYm9hcmQgbGFiZWxzIGxvb2t1cCAtIDxodHRwczovL3d3dy5vcGVuZGF0YS5uaHMuc2NvdC9kYXRhc2V0LzlmOTQyZmRiLWU1OWUtNDRmNS1iNTM0LWQ2ZTE3MjI5Y2M3Yi9yZXNvdXJjZS82NTJmZjcyNi1lNjc2LTRhMjAtYWJkYS00MzViOThkZDdiZGMvZG93bmxvYWQvZ2VvZ3JhcGh5X2NvZGVzX2FuZF9sYWJlbHNfaGIyMDE0XzAxMDQyMDE5LmNzdj4NCg0KU291cmNlOiA8aHR0cHM6Ly93d3cub3BlbmRhdGEubmhzLnNjb3QvPg0KDQojIyAzLiBBc3N1bXB0aW9uczoNCg0KKipOb24tbWVsYW5vbWEgc2tpbiBjYW5jZXI6KioNCg0KVGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYSBiYXNhbCBjZWxsIGNhcmNpbm9tYSBpcyB0aGUgbW9zdCBjb21tb24gdHlwZSBvZiBub24tbWVsYW5vbWEgc2tpbiBjYW5jZXIuIFRoaXMgZGF0YSBpcyBjb2xsZWN0ZWQgb25seSBpbiBTY290bGFuZCBiZWNhdXNlIHRoZXkgYXJlIHNvIGNvbW1vbi4gSG93ZXZlciBvdGhlciBjb3VudHJpZXMgZG9lc24ndCBjb2xsZWN0IGRhdGEgb24gbm9uLW1lbGFub21hIHNraW4gY2FuY2Vycy5BcyBwZXIgdGhlIERhdGEgYW5kIGludGVsbGlnZW5jZSAoIHByZXZpb3VzbHkgSVNEIFNjb3RsYW5kKSwgTm9uLW1lbGFub21hIHNraW4gY2FuY2VyIGlzIHJhcmVseSBmYXRhbCBhbmQgb2Z0ZW4gZXhjbHVkZWQgZnJvbSBjb21wYXJhdGl2ZSBhbmFseXNlcyBvZiBjYW5jZXIgZGF0YS4gU28gaW4gb3VyIGFuYWx5c2lzLHRoZSBkYXRhIG9uIG5vbi1tZWxhbm9tYSBza2luIGNhbmNlciBpcyBleGNsdWRlZC4NCg0KUmVmZXJlbmNlcyBjYW4gYmUgZm91bmQgaW4gPGh0dHBzOi8vd3d3LmlzZHNjb3RsYW5kLm9yZy9IZWFsdGgtVG9waWNzL0NhbmNlci9DYW5jZXItU3RhdGlzdGljcy9Ta2luLz4NCg0KYGBge3IgbWVzc2FnZT1GQUxTRSwgd2FybmluZz1GQUxTRSwgaW5jbHVkZT1GQUxTRX0NCmxpYnJhcnkoaGVyZSkNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkocGxvdGx5KQ0KbGlicmFyeShsYXR0aWNlRXh0cmEpDQpsaWJyYXJ5KFJDb2xvckJyZXdlcikNCmBgYA0KDQpgYGB7ciBtZXNzYWdlPUZBTFNFLCB3YXJuaW5nPUZBTFNFLCBpbmNsdWRlPUZBTFNFfQ0Kc291cmNlKGhlcmUoImNsZWFuaW5nX3NjcmlwdC9jYW5jZXJfaW5jaWRlbmNlX2NsZWFuaW5nX3NjcmlwdC5SIikpDQpgYGANCg0KYGBge3J9DQpteUNvbG91cnMgPC0gYnJld2VyLnBhbCg2LCJQYWlyZWQiKQ0KDQpteS5zZXR0aW5ncyA8LSBsaXN0KA0KICBzdXBlcnBvc2UucG9seWdvbj1saXN0KGNvbD1teUNvbG91cnNbMjo1XSwgYm9yZGVyPSJ0cmFuc3BhcmVudCIpLA0KICBzdHJpcC5iYWNrZ3JvdW5kPWxpc3QoY29sPW15Q29sb3Vyc1s2XSksDQogIHN0cmlwLmJvcmRlcj1saXN0KGNvbD0iYmxhY2siKQ0KKQ0KYGBgDQoNCiMjIDQuIEFuYWx5c2lzIG9uIENhbmNlciBJbmNpZGVuY2UgYmFzZWQgb24gdmFyaW91cyBmYWN0b3JzDQoNCiMjIyA0LjEgQ2FuY2VyIEluY2lkZW5jZSBmb3IgYWxsIGNhbmNlciB0eXBlcw0KDQpgYGB7cn0NCnAgPC0gY2FuY2VyX2luY2lkZW5jZV9ib3JkZXJzICU+JSANCiAgZmlsdGVyKHllYXIgPiAxOTk4LA0KICAgICAgICAgc2V4ICE9ICJBbGwiLA0KICAgICAgICAgY2FuY2VyX3NpdGUgPT0gIkFsbCBjYW5jZXIgdHlwZXMiKSAlPiUgDQogIGdncGxvdCgpKw0KICBhZXMoeCA9IHllYXIsIHkgPSBpbmNpZGVuY2VzX2FsbF9hZ2VzKSsNCiAgZ2VvbV9saW5lKGFlcyhjb2xvdXIgPSBzZXgpLCBhbHBoYSA9IDAuNzUsIHNpemUgPSAxKSArDQogIHNjYWxlX3hfY29udGludW91cyggYnJlYWtzID0gc2NhbGVzOjpicmVha3NfZXh0ZW5kZWQoMTEpKSsNCiAgY29sb3JfdGhlbWUoKSsNCiAgbGFicyh4ID0gIlllYXIgIiwNCiAgICAgICB5ID0gIkluY2lkZW5jZSBhY3Jvc3MgYWxsIGFnZXMiLA0KICAgICAgKSArDQogc2NhbGVfY29sb3VyX21hbnVhbCh2YWx1ZXMgPSBjKCIjMWY3OGI0IiwgIiNiMmRmOGEiKSkNCiAgDQpnZ3Bsb3RseShwKSAgDQpgYGANCg0KVGhlIG92ZXJhbGwgcmlzayBvZiBjYW5jZXIgaXMgaGlnaGVyIGluIGZlbWFsZSB0aGFuIG1lbiB1bnRpbCAyMDEyLiBGcm9tIDIwMTUgb24gd2FyZHMsIHRoZSBvdmVyYWxsIHJpc2sgb2YgY2FuY2VyIGlzIGhpZ2hlciBpbiBtZW4gdGhhbiB3b21lbg0KDQpPdmVyIHRoZSBsYXN0IHRlbiB5ZWFycywgdGhlIHJpc2sgb2YgZGV2ZWxvcGluZyBjYW5jZXIgaW4gU2NvdGxhbmQgTkhTIEJvcmRlcnMgc2VlbXMgdG8gaW5jcmVhc2UgdW50aWwgMjAxNy4gVGhlcmUgc2VlbXMgdG8gYmUgYSBkZWNyZWFzZSBpbiB0cmVuZCBmcm9tIHRoZSB5ZWFyIDIwMTcgYnV0IHJpc2sgb2YgZGV2ZWxvcGluZyBjYW5jZXIgaW4gZmVtYWxlIGlzIHNsaWdodGx5IGluY3JlYXNpbmcgaW4gdGhlIHllYXIgMjAxOC4NCg0KIyMjIDQuMiBDYW5jZXIgSW5jaWRlbmNlIGZvciBhbGwgY2FuY2VyIHR5cGVzIGJ5IGFnZQ0KDQpgYGB7cn0NCnAgPC0gY2FuY2VyX2luY2lkZW5jZV9zdW1tYXJ5X2JvcmRlcnMgJT4lIA0KICBmaWx0ZXIoc2V4ICE9ICJBbGwiLA0KICAgICAgICAgY2FuY2VyX3NpdGUgPT0gIkFsbCBjYW5jZXIgdHlwZXMiKSAlPiUgDQogIHNlbGVjdChhZ2VfY2F0ZWdvcnksbnVtX29mX2luY2lkZW5jZXMsc2V4KSAlPiUgDQogIGdncGxvdCgpKw0KICBhZXMoeCA9IGFnZV9jYXRlZ29yeSwgeSA9IG51bV9vZl9pbmNpZGVuY2VzKSsNCiAgZ2VvbV9jb2woYWVzKGZpbGwgPSBzZXgpLCBwb3NpdGlvbiA9ICJkb2RnZSIpKw0KICBjb2xvcl90aGVtZSgpKw0KICBsYWJzKHggPSAiQWdlIEdyb3VwICIsDQogICAgICAgeSA9ICJOdW1iZXIgb2YgUmVnaXN0cmF0aW9ucyIsDQogICAgICApICsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAwLjUsIGhqdXN0ID0gMSkpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzFmNzhiNCIsICIjYjJkZjhhIikpDQoNCmdncGxvdGx5KHApICANCmBgYA0KDQpUaGUgbnVtYmVycyBvZiBjYW5jZXJzIGluY3JlYXNlcyB3aXRoIGFnZSB0byBhIHBlYWsgYXQgNjUtNjkgeWVhcnMsIGFuZCB0aGVuIGRlY2xpbmVzIHRoZXJlYWZ0ZXIgYXMgdGhlIHNpemUgb2YgdGhlIG9sZGVyIHBvcHVsYXRpb24gZGVjcmVhc2VzLiBJbiAyMDE2LCBvdmVyIDc1JSBvZiBjYW5jZXIgZGlhZ25vc2VzIHdlcmUgaW4gcGVvcGxlIGFnZWQgNjAgYW5kIG92ZXIuDQoNCiMjIyA0LjMgQ2FuY2VyIEluY2lkZW5jZSB1c2luZyBTdGFuZGFyZGl6ZWQgSW5jaWRlbmNlIFJhdGlvIChTSVIpDQoNCkEgU3RhbmRhcmRpemVkIEluY2lkZW5jZSBSYXRpbyAoU0lSKSBpcyB1c2VkIGluIG91ciBjYXNlIHRvIGRldGVybWluZSBpZiB0aGUgb2NjdXJyZW5jZSBvZiBjYW5jZXIgaW4gYSByZWxhdGl2ZWx5IHNtYWxsIHBvcHVsYXRpb24gaXMgaGlnaCBvciBsb3cuIEEgY29uZmlkZW5jZSBpbnRlcnZhbCBpcyBjYWxjdWxhdGVkIGFyb3VuZCBhbiBTSVIgdG8gZGV0ZXJtaW5lIGhvdyBsaWtlbHkgaXQgaXMgdGhhdCB0aGUgbnVtYmVyIG9mIG9ic2VydmVkIG51bWJlciBvZiBjYXNlcyBpcyBoaWdoIG9yIGxvdyBieSBjaGFuY2UuDQoNCmBgYHtyfQ0KDQpwIDwtIGNhbmNlcl9pbmNpZGVuY2Vfc3VtbWFyeV9ib3JkZXJzICU+JSANCiAgZmlsdGVyKHNleCAhPSAiQWxsIiwNCiAgICAgICAgIGNhbmNlcl9zaXRlID09ICJBbGwgY2FuY2VyIHR5cGVzIikgJT4lIA0KICBzZWxlY3QoYWdlX2NhdGVnb3J5LG51bV9vZl9pbmNpZGVuY2VzLHN0YW5kYXJkaXNlZF9pbmNpZGVuY2VfcmF0aW8gLHNleCxjYW5jZXJfc2l0ZSwNCiAgICAgICAgIHNpcl9sb3dlcjk1cGNfY29uZmlkZW5jZV9pbnRlcnZhbCwgc2lyX3VwcGVyOTVwY19jb25maWRlbmNlX2ludGVydmFsKSAlPiUNCiAgICBtdXRhdGUgKGxvd2VyX2NpID0gbnVtX29mX2luY2lkZW5jZXMgKjEwMCAvc2lyX2xvd2VyOTVwY19jb25maWRlbmNlX2ludGVydmFsLA0KICAgICAgICAgICAgIHVwcGVyX2NpID0gbnVtX29mX2luY2lkZW5jZXMgKjEwMCAvc2lyX3VwcGVyOTVwY19jb25maWRlbmNlX2ludGVydmFsKSAlPiUgDQogIGRpc3RpbmN0KCkgJT4lIA0KICBnZ3Bsb3QoKSsNCiAgYWVzKHggPSBhZ2VfY2F0ZWdvcnksIHkgPSBudW1fb2ZfaW5jaWRlbmNlcykrDQogIGdlb21fY29sKGFlcyhmaWxsID0gc2V4KSxwb3NpdGlvbiA9ICJkb2RnZSIpKw0KICBnZW9tX2Vycm9yYmFyKCBhZXMoeD1hZ2VfY2F0ZWdvcnksIHltaW49IGxvd2VyX2NpLCB5bWF4PSB1cHBlcl9jaSksDQogICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gImRvZGdlIiwNCiAgICAgICAgICAgICAgICAgd2lkdGg9MC42LA0KICAgICAgICAgICAgICAgICBjb2xvdXI9Im9yYW5nZSIsDQogICAgICAgICAgICAgICAgIGFscGhhPTAuOSwNCiAgICAgICAgICAgICAgICAgc2l6ZT0xKSsNCiAgY29sb3JfdGhlbWUoKSsNCiAgbGFicyh4ID0gIkFnZSBHcm91cCAiLA0KICAgICAgIHkgPSAiTnVtYmVyIG9mIFJlZ2lzdHJhdGlvbnMiLA0KICAgICAgKSArDQogIHNjYWxlX3lfY29udGludW91cyggYnJlYWtzID0gc2NhbGVzOjpicmVha3NfZXh0ZW5kZWQoMTApKSsNCiAgdGhlbWUoYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoYW5nbGUgPSA0NSwgdmp1c3QgPSAwLjUsIGhqdXN0ID0gMSkpICsNCiAgc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzFmNzhiNCIsICIjYjJkZjhhIikpDQoNCg0KZ2dwbG90bHkocCkNCg0KYGBgDQoNCiMjIyA0LjQgQ2FuY2VyIEluY2lkZW5jZSB3aXRoIHJlc3BlY3QgdG8gYWdlLXNwZWNpZmljIHJhdGVzICgyMDE1IC0gMjAxOSk6DQoNCkJlbG93IHBsb3Qgc2hvd3MgdGhlIGNhbmNlciBpbmNpZGVuY2UgZm9yIHRoZSB5ZWFyIDIwMTUgLSAyMDE5IHdpdGggcmVzcGVjdCB0byB0aGUgYWdlLXNwZWNpZmljIHJhdGUgcGVyIDEwMCwwMDAgcG9wdWxhdGlvbi4NCg0KYGBge3J9DQojIC0tPiBjb25zdHJ1Y3Qgc2VwYXJhdGUgcGxvdHMgZm9yIGVhY2ggc2VyaWVzDQpjYW5jZXJfZGF0YSA8LSBjYW5jZXJfaW5jaWRlbmNlX3N1bW1hcnlfYm9yZGVycyAlPiUgDQogIGZpbHRlcihzZXggIT0gIkFsbCIsDQogICAgICAgICBjYW5jZXJfc2l0ZSA9PSAiQWxsIGNhbmNlciB0eXBlcyIpIA0KDQoNCnBsb3QxIDwtIGJhcmNoYXJ0KG51bV9vZl9pbmNpZGVuY2VzIH4gYWdlX2NhdGVnb3J5LA0KICAgICAgICAgICAgICAgICBkYXRhID0gY2FuY2VyX2RhdGEsDQogICAgICAgICAgICAgICAgIGdyb3VwcyA9IHNleCwNCiAgICAgICAgICAgICAgICAgeGxhYiA9ICJBZ2UgYXQgZGlhZ25vc2lzIiwgDQogICAgICAgICAgICAgICAgIHlsYWIgPSAiIE51bWJlciBvZiBSZWdpc3RyYXRpb25zIiwNCiAgICAgICAgICAgICAgICAgc3RhY2sgPSBGQUxTRSwNCiAgICAgICAgICAgICAgICAgc2NhbGVzID0gbGlzdChyb3QgPSA0NQ0KICAgICAgICAgICAgICAgICApLA0KICAgICAgICAgICAgICAgIGF1dG8ua2V5ID0NCiAgICAgICAgICAgICAgICBsaXN0KGNvbHVtbnMgPSAyLA0KICAgICAgICAgICAgICAgICAgc3BhY2UgPSAidG9wIiwgcG9pbnRzPUZBTFNFLCByZWN0YW5nbGVzPVRSVUUpLA0KICAgICAgICAgICAgICAgICBwYXIuc2V0dGluZ3MgPSBteS5zZXR0aW5ncywNCiAgICAgICAgICAgICAgIHBhci5zdHJpcC50ZXh0PWxpc3QoY29sPSJ3aGl0ZSIsIGZvbnQ9MiksDQogICAgICAgICAgICAgICBwYW5lbD1mdW5jdGlvbih4LHksLi4uKXsNCiAgICAgICAgICAgICAgICAgICAgIHBhbmVsLmdyaWQoaD0tMSwgdj0wKTsgDQogICAgICAgICAgICAgICAgICAgICBwYW5lbC5iYXJjaGFydCh4LHksLi4uKQ0KICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICkNCg0KcGxvdDIgPC0geHlwbG90KHJhdGVfb2ZfaW5jaWRlbmNlcyB+IGFnZV9jYXRlZ29yeSwgDQogICAgICAgICAgICAgICBkYXRhID0gY2FuY2VyX2RhdGEsDQogICAgICAgICAgICAgICBncm91cHMgPSBzZXgsDQogICAgICAgICAgICAgICB0eXBlID0gImEiLA0KICAgICAgICAgICAgICAgbHdkID0gMiwNCiAgICAgICAgICAgICAgIHlsYWIgPSAiUmF0ZSBvZiByZWdpc3RyYXRpb25zIHBlciAxMDAsMDAwIHBvcHVsYXRpb24iLA0KICAgICAgICAgICAgICAgcGFyLnNldHRpbmdzID0gbGlzdCgNCiAgICAgICAgICAgICAgICAgc3VwZXJwb3NlLmxpbmUgPSBsaXN0KGNvbCA9IGMoIiMxZjc4YjQiLCAiI2IyZGY4YSIpKSkNCiAgICAgICAgICAgICAgICkNCiANCmRvdWJsZVlTY2FsZShwbG90MSwgDQogICAgICAgICAgICAgcGxvdDIsDQogICAgICAgICAgICAgdXNlLnN0eWxlID0gRkFMU0UsDQogICAgICAgICAgICAgYWRkLnlsYWIyID0gVFJVRSkNCg0KYGBgDQoNClRoZSBhZ2Ugc3BlY2lmaWMgbnVtYmVycyBvZiBjYW5jZXJzIHJlZmxlY3QgYm90aCB0aGUgcmlzayBhbmQgdGhlIG51bWJlciBvZiBwZW9wbGUgYXQgcmlzay4gVGhlIG51bWJlcnMgb2YgY2FuY2VycyBpbmNyZWFzZXMgd2l0aCBhZ2UgdG8gYSBwZWFrIGF0IDcwLTc0IHllYXJzLCBhbmQgdGhlbiBkZWNsaW5lcyB0aGVyZWFmdGVyIGFzIHRoZSBzaXplIG9mIHRoZSBvbGRlciBwb3B1bGF0aW9uIGRlY3JlYXNlcy4NCg0KIyMjIDQuNSBDYW5jZXIgSW5jaWRlbmNlIGJ5IFNpdGU6DQoNCmBgYHtyfQ0KDQpwIDwtIGNhbmNlcl9pbmNpZGVuY2Vfc3VtbWFyeV9ib3JkZXJzICU+JSANCiAgICAgbXV0YXRlIChsb3dlcl9jaSA9IGluY2lkZW5jZXNfYWxsX2FnZXMgKjEwMCAvc2lyX2xvd2VyOTVwY19jb25maWRlbmNlX2ludGVydmFsLA0KICAgICAgICAgICAgIHVwcGVyX2NpID0gaW5jaWRlbmNlc19hbGxfYWdlcyAqMTAwIC9zaXJfdXBwZXI5NXBjX2NvbmZpZGVuY2VfaW50ZXJ2YWwpICU+JSANCiAgZmlsdGVyIChjYW5jZXJfc2l0ZSAhPSAiQWxsIGNhbmNlciB0eXBlcyIsDQogICAgICAgICAgc2V4ICE9ICJBbGwiKSAlPiUgDQogIHNlbGVjdCAoY2FuY2VyX3NpdGUsIGluY2lkZW5jZXNfYWxsX2FnZXMsIHNleCxsb3dlcl9jaSwgdXBwZXJfY2kpICU+JSANCiAgZGlzdGluY3QoKSAlPiUgDQogIGFycmFuZ2UoZGVzYyhpbmNpZGVuY2VzX2FsbF9hZ2VzKSkgJT4lIA0KICBzbGljZV9tYXgoaW5jaWRlbmNlc19hbGxfYWdlcyxuID0gMjApICU+JSANCiAgZ2dwbG90KCkrDQogIGFlcyh4PSByZW9yZGVyKGNhbmNlcl9zaXRlLGluY2lkZW5jZXNfYWxsX2FnZXMpLCB5ID0gaW5jaWRlbmNlc19hbGxfYWdlcywgZmlsbCA9IHNleCApICsNCiAgZ2VvbV9jb2wocG9zaXRpb24gPSAiZG9kZ2UiKSArDQogIGNvb3JkX2ZsaXAoKSArDQojICMgIGdlb21fcmliYm9uKGFlcyh5bWF4ID0gbGVfdXBwZXJfY2ksIHltaW4gPSBsZV9sb3dlcl9jaSksIGFscGhhID0gMC4yNSwgY29sb3VyID0gTkEpICsNCiMgICBnZW9tX2Vycm9yYmFyKCBhZXMoeD1jYW5jZXJfc2l0ZSwgeW1pbj0gbG93ZXJfY2ksIHltYXg9IHVwcGVyX2NpKSwNCiMgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9ICJkb2RnZSIsDQojICAgICAgICAgICAgICAgICAgd2lkdGg9MC40LA0KIyAgICAgICAgICAgICAgICAgIGNvbG91cj0ib3JhbmdlIiwNCiMgICAgICAgICAgICAgICAgICBhbHBoYT0wLjksIHNpemU9MS4zKSsNCiAgY29sb3JfdGhlbWUoKSArDQogIGxhYnMoeSA9ICJOdW1iZXIgb2YgUmVnaXN0cmF0aW9uc1xuIiwNCiAgICAgICB4ID0gIlxuQ2FuY2VyIFNpdGUiLA0KICAgICAgKSArDQogc2NhbGVfZmlsbF9tYW51YWwodmFsdWVzID0gYygiIzFmNzhiNCIsICIjYjJkZjhhIikpDQoNCmdncGxvdGx5KHApDQpgYGANCg0KVGhvdWdoIHRoZSBwbG90IHNob3dzIHRoYXQgdGhlIGhpZ2hlc3QgY2FzZXMgaGFzIGJlZW4gc2VlbiBpbiBtZW4gZm9yIFByb3N0YXRlIENhbmNlciBhbmQgZmVtYWxlIGZvciBCcmVhc3QgQ2FuY2VyLCBMdW5nIGNhbmNlciByZW1haW5zIHRoZSBtb3N0IGNvbW1vbiBjYW5jZXIgaW4gTkhTIEJvcmRlcnMgZm9yIGJvdGggc2V4ZXMgY29tYmluZWQsIGZvciB0aGUgcGVyaW9kIG9mIDIwMTUgLSAyMDE5Lg0KDQojIyMgNC42IENhbmNlciBJbmNpZGVuY2UgZm9yIHRoZSB0b3AgNCBjYW5jZXIgc2l0ZXMgYWNyb3NzIHRoZSBHZW5kZXI6DQoNCmBgYHtyfQ0KcCA8LSBjYW5jZXJfaW5jaWRlbmNlX2JvcmRlcnMgJT4lIA0KICAgZmlsdGVyICgoY2FuY2VyX3NpdGUgJWluJSBjKCJCcmVhc3QiLCJDb2xvcmVjdGFsIGNhbmNlciIsIlRyYWNoZWEsIGJyb25jaHVzIGFuZCBsdW5nIikgJiBzZXggPT0gIkZlbWFsZSIpIHwNCiAgICAgICAgICAgIChjYW5jZXJfc2l0ZSAlaW4lIGMoIlByb3N0YXRlIiwiQ29sb3JlY3RhbCBjYW5jZXIiLCAiVHJhY2hlYSwgYnJvbmNodXMgYW5kIGx1bmciKSAmIHNleCA9PSAiTWFsZSIpLA0KICAgICAgICAgICB5ZWFyID4gMTk5OCkgJT4lDQogIHNlbGVjdCAoeWVhciwgY2FuY2VyX3NpdGUsaW5jaWRlbmNlc19hbGxfYWdlcywgc2V4KSAlPiUNCiAgZGlzdGluY3QoKSAlPiUgDQogIGdncGxvdCgpKw0KICBhZXMoeD0geWVhciwgeSA9IGluY2lkZW5jZXNfYWxsX2FnZXMpICsNCiAgZ2VvbV9saW5lKGFlcyhjb2xvdXIgPSBjYW5jZXJfc2l0ZSkpICsNCiAgZmFjZXRfd3JhcCh+c2V4LCBzY2FsZXMgPSAiZnJlZSIgKSsNCiAgY29sb3JfdGhlbWUoKSArDQogIGxhYnMoeSA9ICJcbiBOdW1iZXIgb2YgaW5jaWRlbmNlc1xuIiwNCiAgICAgICB4ID0gIlxuIENhbmNlciBTaXRlIiwNCiAgICAgICkgKw0KICB0aGVtZShheGlzLnRleHQueCA9IGVsZW1lbnRfdGV4dChhbmdsZSA9IDQ1LCB2anVzdCA9IDAuNSwgaGp1c3QgPSAxKSkgKw0KICBzY2FsZV9jb2xvdXJfbWFudWFsKHZhbHVlcyA9IGMoIiMxZjc4YjQiLCAiI2IyZGY4YSIsICIjZDk1ZjAyIiwiIzc1NzBiMyIpKQ0KDQpnZ3Bsb3RseShwKQ0KICANCmBgYA0KDQpGb3IgZmVtYWxlcywgdGhlcmUgaGFzIGJlZW4gbGl0dGxlIHNpZ25pZmljYW50IGNoYW5nZSBpbiByYXRlcyBvZiBhbGwgdGhlIHRocmVlIHR5cGVzIG9mIGNhbmNlci4gRm9yIG1hbGVzLCB0aGVyZSBoYXMgYmVlbiBhIGdyZWF0IHJpc2UgaW4gcHJvc3RhdGUgY2FuY2VycyBhbmQgYSBsaXR0bGUgc2lnbmlmaWNhbnQgcmlzZSBpbiB0aGUgY29sb3JlY3RhbCBjYW5jZXIgYnV0IHRoZSBjYW5jZXIgcmF0ZSBmYWxscyBpbiBsdW5nIGNhbmNlcnMNCg0KIyMgNS4gUmlzayBGYWN0b3Igd2l0aCByZXNwZWN0IHRvIENhbmNlciBUeXBlOg0KDQpUaGUgdHJlbmRzIGluIGNhbmNlciBpbmNpZGVuY2UgbWF5IGFsc28gYmUgaW5mbHVlbmNlZCBieSBjaGFuZ2VzIGluIHRoZSBwcmV2YWxlbmNlIG9mIHJpc2sgZmFjdG9ycyBhc3NvY2lhdGVkIHdpdGggY2FuY2VyIG92ZXIgdGltZS4NCg0KIVtdKHJpc2tfY2FuY2VyLmpwZyl7d2lkdGg9IjQxNCJ9DQoNCiMjIDYuIENhbmNlciB3YWl0aW5nIHRpbWVzOg0KDQpFdmVuIHRob3VnaCwgdGhlIGNhbmNlciBpcyBzdXNwZWN0ZWQgb3IgY29uZmlybWVkLCBpdCBpcyBub3QgYWx3YXlzIHRoZSBjYXNlIHRoYXQgdGhlIHRyZWF0bWVudCBjb3VsZCBiZWdpbiBhcyBzb29uIGFzIHBvc3NpYmxlLiBUaGVyZSBjb3VsZCBiZSB2YXJpb3VzIHJlYXNvbnMgZm9yIHRoZSB3YWl0aW5nIHRpbWVzLiBBcyBwZXIgUHVibGljIEhlYWx0aCBTY290bGFuZCxhIDYyLWRheSBzdGFuZGFyZCBhcHBsaWVzIHRvIEdQIHJlZmVycmFscywgY2FuY2VyIHNjcmVlbmluZyBwb3NpdGl2ZSwgc2VsZi1yZWZlcnJhbHMgYW5kIGEgMzEtZGF5IHN0YW5kYXJkIGFwcGxpZXMgdG8gYWxsIHBhdGllbnRzIGZyb20gdGhlIGRhdGUgYSBkZWNpc2lvbiB0byB0cmVhdCBhIG5ld2x5LWRpYWdub3NlZCBjYW5jZXIgaXMgbWFkZS4NCg0KIyMgNy4gS2V5IFBvaW50cyA6DQoNCi0gICBUaGVyZSBoYXZlIGJlZW4gc2lnbmlmaWNhbnQgY2hhbmdlcyBpbiB0aGUgcmF0ZXMgb2YgY2FuY2VyIG92ZXIgdGhlIHBhc3QgZGVjYWRlLg0KLSAgIFRoZSByaXNrIG9mIGRldmVsb3BpbmcgY2FuY2VyIGluY3JlYXNlZCB1bnRpbCAyMDE3IGFmdGVyIHdoaWNoIGl0IGZhbGxzIGluIG1lbiB3aGVyZSB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gZmVtYWxlLg0KLSAgIFRoZSByYXRlLCBvciByaXNrLCBvZiBjYW5jZXIgZGlhZ25vc2VzIGluY3JlYXNlcyB3aXRoIGFnZSBpbiBib3RoIHNleGVzLg0KLSAgIFRoZSByYXRlIG9mIGx1bmcgY2FuY2VyIGlzIGluY3JlYXNlZCBmb3Igd29tZW4gd2hlbiBjb21wYXJlZCB0byBtYWxlLiBUaGlzIGFsc28gcmVmbGVjdHMgdGhlIGhpc3RvcmljYWwgcGF0dGVybnMgb2Ygc21va2luZyBpbiB0aGUgcG9wdWxhdGlvbi4NCi0gICBDb2xvcmVjdGFsIGNhbmNlciBzZWVtcyB0byBpbmNyZWFzZSB3aXRoIGJvdGggc2V4Lg0KLSAgIEFsbCBjYW5jZXIgc2NyZWVuaW5nIHByb2dyYW1tZXMgaGF2ZSB0aGUgcG90ZW50aWFsIHRvIGlkZW50aWZ5IGNhbmNlcnMuIFNvIGZyZXF1ZW50IFNjcmVlbmluZyBtaWdodCBoZWxwIHRvIGRpYWdub3NlIGNhbmNlciBhdCBhbiBlYXJseSBzdGFnZQ0KLSAgIEV4aXN0aW5nIGRpYWdub3N0aWMgdGVjaG5pcXVlcyBjYW4gYmUgZW5oYW5jZWQgd2hpY2ggY2FuIGhlbHAgdG8gZGlhZ25vc2UgdGhlIGNhbmNlciBhdCBhbiBlYXJseSBzdGFnZSB0aHVzIHJlZHVjaW5nIHRoZSBpbmNpZGVuY2UgcmF0ZSBmb3IgY2FuY2VyLiBlZyBJbmNpZGVudGFsIENhbmNlci4NCg==